遺伝的アルゴリズム(GAs)は、ダーウィン主義的な「生存の競争」および遺伝子再結合の原理に基づいた確率的グローバル探索ヒューリスティックです。
1. 表現フレームワーク
- 標準型GAs:決定変数を2進数またはグレイ符号の文字列でエンコードする。
- 実数表現型GAs(RCGAs):浮動小数点ベクトルを直接操作し、連続最適化において効率的であることが多い。
2. 進化的ループ
評価、選択、再生成の反復プロセスである。重要な概念は、ゲノタイプ(符号化されたビット列/染色体)とフィノタイプ(実際の問題空間におけるデコードされた決定変数値)の違いである。
2進文字列から実数値 $x \in [a, b]$へのマッピングは次の式で与えられる:
$$x = a + \frac{decimal\_value \times (b - a)}{2^L - 1}$$
ここで $L$ は染色体のビット長である。
ハミングクラフツ
注意が必要なのはハミングクラフツ標準的な2進符号化において—隣接する十進数(例:7と8)が全く異なる2進ビットパターン(
0111対比して1000)を持つ状況であり、これにより遺伝的アルゴリズムが局所的な探索を困難にする。
Pythonによる実装:2進→実数へのデコード
質問1
なぜグレイ符号化は、遺伝的アルゴリズム(GA)において標準的な2進符号化よりも好まれるのか?
質問2
突然変異確率(p)が高すぎると(例:p = 0.5)、どのような結果になる可能性が高いか?
ケーススタディ:橋梁部品の最適化
以下のシナリオを読んで、質問に答えなさい。
決定変数が「材料厚さ」である橋梁部品の設計を最適化しています。
- 厚さは0.0mmから10.23mmの間でなければならない。
- あなたは10ビットの10ビット2進文字列表現を用いた標準型GAを使用しています。
Q
1. 個体の染色体が
0000000000の場合、デコードされた厚さは何か?解答:0.0mm
2進文字列
2進文字列
0000000000は10進数で0に等しい。式 $x = a + \frac{decimal \times (b-a)}{2^L - 1}$ を用いると、$0.0 + \frac{0 \times (10.23 - 0.0)}{1023} = 0.0$ となる。Q
2. この10ビット設定における探索精度(厚さの最小変化量)を計算せよ。
解答:0.01mm
精度は範囲を最大可能な10進数値で割ったものとして定義される。$\frac{10.23 - 0}{2^{10} - 1} = \frac{10.23}{1023} = 0.01mm$。
精度は範囲を最大可能な10進数値で割ったものとして定義される。$\frac{10.23 - 0}{2^{10} - 1} = \frac{10.23}{1023} = 0.01mm$。
Q
3. 選択の際に、個体Aの適応度は10、個体Bの適応度は30である。ルーレット方式を用いた場合、BがAより選ばれる確率はどれか?
解答:75%
合計適応度 = $10 + 30 = 40$。Bを選択する確率 = $\frac{30}{40} = 0.75$ または75%。(3:1の比率)。
合計適応度 = $10 + 30 = 40$。Bを選択する確率 = $\frac{30}{40} = 0.75$ または75%。(3:1の比率)。